import Request from "luch-request";
import { useUserStore } from "../stores/user.js";

import loginto from "@/utils/reder.js";

import { IsLoginfun } from "@/utils/intercept";
import { typefun } from "@/utils/intype.js";

// #ifdef MP-WEIXIN
// import {
// 	milogin
// } from '@/utils/wxminlogin.js';
// #endif

const tabBarList = ["pages/index/index"];

// 接口白名单
const whiteList = [
  "/member/user/mobile",
  "/login",
  "/member/wechat",
  "/member/wechat/jssdk",
  "/member/refill/list",
  "/member/customer/index",
  "/member/mini",
  "/member/customer/giftDetail",
];
// const base_URL = 'https://mmfx.yibaitao.com' //测试环境/
// const base_URL = "https://www.mingsongwang.com"; //测试环境/
const base_URL = import.meta.env.VITE_BASE_URL; // 根目录 .env 文件配置

// const base_URL = 'https://mmfx.yibaitao.com/api/' //生产环境

// 实例化网络请求模块
const http = new Request({
  // 配置接口的基地址
  baseURL: base_URL + "/api",
});

let loginModal = false;
// 请求拦截器
http.interceptors.request.use(
  function (config) {
    // config.header["sdafasdf"] = "11";
    // 显示加载状态提示
    if (
      (config.data && !config.data.offLoading) ||
      (config.params && !config.params.offLoading)
    ) {
      uni.showLoading({
        title: "正在加载...",
        mask: true,
      });
    }
    // 获取 token
    const userStore = useUserStore();

    if (
      uni.getStorageSync("Authorization") &&
      !whiteList.includes(config.url)
    ) {
      config.header["Authorization"] = uni.getStorageSync("Authorization");
      // if (import.meta.env.MODE != "development") {
      config.header["Client-Type"] = typefun();
      // }
    } else {
      config.header["Authorization"] = "";
      // if (import.meta.env.MODE != "development") {
      config.header["Client-Type"] = typefun();
      // }
    }

    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);

// 响应拦截器
http.interceptors.response.use(
  function (data, statusCode) {
    const user = useUserStore();

    // 隐藏加载状态提示

    uni.hideLoading();

    if (data.data.code !== 200) {
      if (
        data.data.code === 1000 ||
        data.data.code === 4000 ||
        data.data.code === 4001 ||
        data.data.code === 4002
      ) {
        // #ifdef MP-WEIXIN

        // if (!loginModal) {

        // 	loginModal = true;
        // 	// 弹窗告诉用户去登录
        // 	uni.showModal({
        // 		title: "温馨提示",
        // 		content: "您的授权已失效",
        // 		// showCancel: false,
        // 		confirmText: "去授权",
        // 		cancelText: "再逛会",
        // 		success: (res) => {
        // 			if (res.confirm) {

        // 				uni.removeStorageSync("jwt-token");
        // 				uni.removeStorageSync("userInfo")
        // 				uni.removeStorageSync("is_real")

        // 				uni.switchTab({
        // 					url: "/pages/index/index",
        // 				});
        // 				setTimeout(() => {
        // 					milogin();
        // 				}, 10)

        // 			}
        // 			if (res.cancel && getCurrentPages().length > 1) {
        // 				uni.navigateBack();
        // 			} else {
        // 				if (res.cancel) {
        // 					uni.switchTab({
        // 						url: '/pages/index/index'
        // 					})
        // 				}

        // 			}
        // 			loginModal = false;
        // 		},
        // 	});
        // }

        // #endif
        // 防止重复弹窗
        //h5登录授权页面
        // #ifdef H5
        // var ua = navigator.userAgent.toLowerCase()
        // var isWXWork = ua.match(/wxwork/i) == 'wxwork'
        // var isWeixin = !isWXWork && ua.match(/micromessenger/i) == 'micromessenger'
        // var isMobile = false
        // var isDesktop = false
        // isMobile = true
        // if (navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i)) {
        // 	isMobile = true
        // } else {
        // 	isDesktop = true
        // }
        // if (isWeixin) {

        // 	if (!loginModal) {

        // 		loginModal = true;
        // 		// 弹窗告诉用户去登录
        // 		uni.showModal({
        // 			title: "温馨提示",
        // 			content: "您的授权已失效",
        // 			// showCancel: false,
        // 			confirmText: "去授权",
        // 			cancelText: "再逛会",
        // 			success: (res) => {
        // 				if (res.confirm) {

        // 					uni.removeStorageSync("jwt-token");
        // 					uni.removeStorageSync("userInfo")
        // 					uni.removeStorageSync("is_real")

        // 					uni.switchTab({
        // 						url: "/pages/index/index",
        // 					});
        // 					setTimeout(() => {
        // 						loginto({
        // 							type: 1
        // 						})
        // 					}, 10)

        // 				}
        // 				if (res.cancel && getCurrentPages().length > 1) {
        // 					uni.navigateBack();
        // 				} else {
        // 					if (res.cancel) {
        // 						uni.switchTab({
        // 							url: '/pages/index/index'
        // 						})
        // 					}

        // 				}
        // 				loginModal = false;
        // 			},
        // 		});
        // 	}

        // 	return
        // }

        // #endif

        uni.removeStorageSync("Authorization");

        if (!loginModal) {
          uni.removeStorageSync("userInfo");
          loginModal = true;
          // 弹窗告诉用户去登录
          uni.showModal({
            title: "温馨提示",
            content: "此时此刻需要您登录喔~",
            // showCancel: false,
            confirmText: "去登录",
            cancelText: "再逛会",
            success: (res) => {
              if (res.confirm) {
                uni.navigateTo({
                  url: "/pages/login/login",
                });
              }
              if (res.cancel && getCurrentPages().length > 1) {
                uni.navigateBack();
              } else {
                if (res.cancel) {
                }
              }
              loginModal = false;
            },
          });
        }
      } else if (data.data.code === 1002) {
        //  接口没有权限
      }

      // uni.showToast({
      //   title: data.data.info,
      //   icon: "none",
      //   duration: 2000,
      // });
      return Promise.reject(data.data || "Error");
    } else {
      // #ifdef MP-WEIXIN
      if (data.header["Authorization"]) {
        user.token = data.header["Authorization"];
        uni.setStorageSync("Authorization", data.header["Authorization"]);
      }
      // #endif
      // #ifdef H5
      if (data.header["Authorization"]) {
        user.token = data.header["Authorization"];
        uni.setStorageSync("Authorization", data.header["Authorization"]);
      }
      // #endif
    }
    return data.data;
    // 解构出响应主体
  },
  async function (error) {
    uni.hideLoading();
    if (
      error.data.code !== 200 &&
      (error.data.code === 1000 ||
        error.data.code === 4000 ||
        error.data.code === 4001 ||
        error.data.code === 4002 ||
        data.data.code === 4003)
    ) {
      uni.removeStorageSync("Authorization");
      // debugger;
      if (!loginModal) {
        uni.removeStorageSync("userInfo");
        loginModal = true;
        // 弹窗告诉用户去登录
      }
      IsLoginfun();
    } else {
      return Promise.reject(error.data);
    }
  }
);

// 导出配置好的模网络模块
export { http, base_URL };
